﻿using FluentValidation.Results;
using System;
using System.Collections.Generic;
using System.Text;
using xiaodingmarket_Domain_core.Events;

namespace xiaodingmarket_Domain_core.Commands
{
    /// <summary>
    /// Command领域命令(增删改)，不返回任何结果(void)，但会改变数据对象的状态。
    /// </summary>
    public abstract class Command : Message
    {
        public DateTime Timestamp { get; private set; }
        //DTO进入->将DTO交换到模型->验证模型->将模型交换到实体->在数据库中存储实体->使用更新的实体并将其交换到新的DTO->返回DTO
        //DTO绑定验证，使用Fluent API(重写OnModelCreating方法)来实现,FluentValidation
        public ValidationResult ValidationResult { get; set; }

        protected Command()
        {
            //命令时间
            Timestamp = DateTime.Now;
        }
        //实现Command抽象类的DTO数据验证
        public abstract bool IsValid();
    }
}
